為什麼要複製陣列?
因為陣列有可能需要使用陣列資料但不希望更動原本的資料
為什麼不想動到原本的資料?
因為可能會動到陣列資料只是一種狀態,異動狀態回來後,希望是原始的資料,EX:快速選單反白功能
由於只要不是基本資料型別,物件間傳值都是傳位址,這樣一來更動就會動到原始資料了,故現在來找複製的方式
以上有3種拷貝方式
[…array] , .slice(0)
此方式都是只複製基本資料型別,只要陣列中有其他陣列或物件,還是會傳遞位置使用 JSON.parse( JSON.stringify( string ) )
,會連裡面所有陣列與物件都複製一份新的,也就是異動不會在動到原始資料,最後$.extend是最深的拷貝他會連整個原形鍊,都複製過來。,也就是說如果用第2種JSON轉換,複製過來去改原型,也會被跟著改,若使用$.extend則是一份全新的(但使用情境極少)